Long-running application instances, such as, for example, instances of workflow applications, often benefit from periodically persisting their work to allow for the application instance to recover after errors, crashes, or machine failures. Persisting work can also permit applications to temporarily go idle and have their resources reassigned. To persist work, an application host can coordinate the persisted state of an application instance with runtime state of the instance to ensure that a consistent checkpoint is created. For example, the persisted state for an instance may need to coordinate with application transactions, message notifications, locks, local state caches, etc. An authoritative version of the persisted state of one or more instances can be stored in a store, which will be referred to herein as an instance store.
Subsequent to persisting the application instance state, aspects of the persisted instance state can be queried in the instance store, for example to support application tools for system administration, diagnostics, health monitoring, business process tracking, reporting, visualization, or analysis. As used herein, querying and similar terms refer broadly to reading stored data. Application tools are often conceived of and implemented independently of the primary application that is executing the instance.